package com.ruoyi.web.controller.example;


import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Anonymous
@Api(tags = "文件上传")
@RestController
public class FileUploadController {

    @Value("${ruoyi.profile}")//获取application中的配置
    private String UPLOAD_PATH;
    @ApiOperation(value = "文件上传接口")
    @PostMapping("/FileUpload")
    public AjaxResult FileUpload(@RequestPart("myFile")MultipartFile file){
        //先判断一下，传过来的文件是否是空的，如果是空文件，直接返回
        if (file.isEmpty()){
            return AjaxResult.error(500,"上传文件不能为空");
        }
        //获取文件名称 例如 上传文件名称是abc.jpg 那filename就是abc.jpg
        String FileName = file.getOriginalFilename();
        //此处我们获取到了文件名称，现在想限制，让我们的系统只能上传图片
        //那么我们就需要限制一下文件的后缀，不在我们规定的范围内，不让上传
        System.out.println("文件名称是：" + FileName);
        String[] arrs = FileName.split("\\.");
        String suffix = arrs[arrs.length-1];
        if (!suffix.equals("jpg") && !suffix.equals("png") && !suffix.equals("jpeg")){
            return AjaxResult.error(500,"只能上传图片,当前后缀为：" + suffix);
        }


        File Path = new File(UPLOAD_PATH);
        System.out.println("path是：" + Path.toString());

        if (!Path.exists()){
            //判断路径下是否存在，如果不存在，就创建一个
            //mkdir 函数 和Linux中的mkdir一样，都是创建目录（可以理解为新建文件夹）
            Path.mkdir();
        }
        File dest = new File(UPLOAD_PATH + "/" + FileName);
        try {
            file.transferTo(dest);
            return AjaxResult.success("文件上传成功");
        } catch (IOException e) {
            System.out.println("异常原因：" + e.getMessage());
            throw new BizException(500,"文件上传失败");
        }
    }
}
